// STL8.cp
#include <iostream>
#include <memory>
#include <string>
#include <cstring>
#include <MacTypes.h>

class PStrTemp
{
Str255 s;
void	MakePString(const char *cString)
{
std::size_t length= std::strlen(cString);
s[0] = length > 255? 255: length;
std::strncpy((char *)&s[1], cString, 255);
};
public:
PStrTemp(const char *cString)
{
MakePString(cString);
};
PStrTemp(const std::string& stdString)
{
MakePString(stdString.c_str());
};
operator const unsigned char *() const {return s;};
};

using namespace std;
void PStringFunction(ConstStr255Param stringValue);
void PStringFunction(ConstStr255Param stringValue)
{
// do something
string	outString((const char *)&stringValue[1], stringValue[0]);
cout << outString << endl;
}

int main()
{
char	*a = "C string";
string	b = "std::string";
PStringFunction(PStrTemp(a));
PStringFunction(PStrTemp(b));
}